今天要來介紹 Ethereum 中的主角 Smart Contract。
Ethereum 主要的出現就是為了能夠在 EVM 執行 Smart Contract 來強化區塊鏈能力。
Dapp 指的是 Decentrailized Application , 去中心化的應用程式也是常常會被提到的一個概念。相對於一般的應用程式具有一個中心化的資料存儲,Dapp 的資料狀態是存儲在分散式的共識網路,類似於區塊鏈這樣的資料保存機制。
Smart Contract 雖然可以翻譯做智能合約,
但其實一點不智能且也不適合約。
Smart Contract 本質上是一個可以在 EVM 上執行的腳本,使用 Solidity 作為撰寫的語言。
具體來說,可以當作是一台數位化販賣機。當撰寫好腳本,如同設計好販賣規則。遇到對應的事件,就會自動觸發要執行的邏輯。然而,當販賣機設定完,你就無法去更改販售規則。要更改規則只能重新建立一台不同規則的販賣機。
Smart Contract 發佈到鏈上後。EVM 在接收到呼叫 Smart Contract 的 Message 時,會自動去找到對應的 Smart Contract 邏輯執行。
有點類似 AWS 中的 lambda 可以在收到註冊事件時,自動去執行註冊好的邏輯。
Smart Contract 由 EOA 建立後,會把 Contract 內容發佈到鏈上。會產生該 Contract 的 ABI(Application Binary Interface)來當作對應接口。
其他 EOA 或是 Smart Contract 都可以透過ABI(Application Binary Interface)來對 Smart Contract 傳訊息。
Smart Contract 腳本會發佈到鏈上,且其無法隨意做修改。且撰寫是由具備俱備圖靈完備性的語言所撰寫。所以其執行結果可以從輸入來做預測。
Smart Contract 因為只能執行寫在腳本的內容,所以當需要創造一個隨著真實界資料而變動結果的合約,會需要一個可以統合外部資料的機制。這個機制就是所謂 Ethereum Oracle ,允許引入一些外部資料提供者到 Contract 內。來做一些更彈性的應用,比如根據天氣狀況來開分配獎金。
基本上可以看出,當引入外部中心化的資料來源後。 Smart Contract 就有可能被引入資料供應者所影響,而不再去中心化。
chainLink提出了一個去中心化oracle網路,來解決上述問題。
https://ethereum.org/en/smart-contracts/
https://www.youtube.com/watch?v=ZJfkNzyO7-U
chainLink